面试题-Java API 篇
转载请注明出处,点击此处 查看更多精彩内容
最近得空,就去一些招聘网站做了些面试题,为方便大家共同学习,Java API
相关的就在这篇博客里记录一下,以后有空会持续更新,大家有更好的答案也可以留言告诉我。
1. HashMap 和 Hashtable 的区别
Hashtable
继承自Dictiionary
而HashMap
继承自AbstractMap
。HashMap
允许将null
作为一个entry
的key
或者value
,而Hashtable
不允许。Hashtable
使用contains
方法去查看是否包含某一对象,HashMap
使用containsvalue
和containsKey
。- 最大的不同是,
Hashtable
的方法是Synchronize
的,而HashMap
不是,在多个线程访问Hashtable
时,不需要自己为它的方法实现同步,而HashMap
就必须为之提供外同步(Collections.synchronizedMap
)。
2. Collection 和 Collections 的区别
Collection
是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection
接口在 Java
类库中有很多具体的实现。Collection
接口的意义是为各种具体的集合提供了最大化的统一操作方式;
Collections
是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于 Java
的 Collection
框架。
3. sleep() 和 wait() 有什么区别?
sleep()
方法是属于 Thread
类中的。而 wait()
方法是属于 Object
类中的。
sleep()
方法导致了程序暂停执行指定的时间,让出 cpu
该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用 sleep()
方法的过程中,线程不会释放对象锁。
而当调用 wait()
方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用 notify()
方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。